package com.rgc.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;

import com.rgc.domain.Puntaje;


public class PuntajeDaoImpl extends JdbcDaoSupport implements PuntajeDao {

	public List<Puntaje> listPuntaje() {	
		return listPuntaje(new String[]{},new String[]{});
	}

	public List<Puntaje> listPuntaje(String[] campo, String[] valor) {		
		try {
			String sql = " SELECT * FROM puntaje  ";
			String conector=" where ";
			for (int i=0;i<campo.length;i++)  {
				 sql+=conector+""+campo[i]+"='"+valor[i]+"'";
				 conector=" and ";
						 
		    }
			sql+=conector+"  estado=1 "+" order by idpuntaje";

			List<Puntaje> usuarioFound =  getJdbcTemplate().query(
        			sql, new BeanPropertyRowMapper<Puntaje>(Puntaje.class));
         
			

        	return usuarioFound;
        	
    } catch (Exception e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
    }
		
	return new ArrayList<Puntaje>();
		
	
	}

	public Puntaje getPuntaje(String idpuntaje) {	
		List<Puntaje> puntaje=listPuntaje(new String[]{"idpuntaje"},new String[]{idpuntaje});
		if(puntaje.size()>0)
			return puntaje.get(0);
		return null;		
	}

	public boolean modPuntaje(Puntaje puntaje) {
		
		try{
			String sql="UPDATE puntaje set primer_lugar='"+puntaje.getPrimer_lugar()+"',segundo_lugar='"+puntaje.getSegundo_lugar()+"',asistencia='"+puntaje.getAsistencia()+"',puntos_partida='"+puntaje.getPuntos_partida()+"',puntos_win='"+puntaje.getPuntos_win()+"' where idpuntaje='"+puntaje.getIdpuntaje()+"' ";		
			getJdbcTemplate().update(sql);
			return true;
		}catch(Exception e){
			e.printStackTrace();
		}
		return false;
	}

	public boolean delPuntaje(String idpuntaje) {
		
		try{
			String sql="DELETE FROM puntaje where idpuntaje='"+idpuntaje+"' ";		
			getJdbcTemplate().update(sql);
			return true;
		}catch(Exception e){
			
		}
		return false;
	}

	public boolean addPuntaje(final Puntaje puntaje) {
				try {
					KeyHolder keyHolder = new GeneratedKeyHolder(); 
					final String sql = "INSERT INTO puntaje(nombre,primer_lugar,segundo_lugar,asistencia,puntos_partida,puntos_win) values(?,?,?,?,?,?)";
					getJdbcTemplate().update(
							new PreparedStatementCreator()
					        {
					            public PreparedStatement createPreparedStatement(Connection conn) throws SQLException
					            {
					                PreparedStatement preparedStatement = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
					                preparedStatement.setString(1,puntaje.getNombre());
					                preparedStatement.setInt(2,puntaje.getPrimer_lugar());
					                preparedStatement.setInt(3,puntaje.getSegundo_lugar());
					                preparedStatement.setInt(4,puntaje.getAsistencia());
					                preparedStatement.setInt(5,puntaje.getPuntos_partida());
					                preparedStatement.setInt(6,puntaje.getPuntos_win());     
					                return preparedStatement;
					            }
					        }	
							,keyHolder);			
					   
		                
		                return true;
		         
		        } catch (Exception e) {
		                System.out.println(e.getMessage());
		                e.printStackTrace();
		        }
				return false;
	}

}
